#pragma once

template <typename T>
class list_base
{
public:
	virtual void push_front(T elem) = 0;
	virtual void push_back(T elem) = 0;
	virtual const T front() = 0;
	virtual const T back() = 0;
	virtual void pop_front() = 0;
	virtual void pop_back() = 0;
	virtual bool empty() = 0;
	virtual int size() = 0;
	virtual ~list_base() {};
};